package com.zls.rabbitmp.to;

import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.zls.rabbitmp.util.ConnectionUtil;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class ToProducer {
    /**
     * 路由模式  消息生产者
     * @param args
     * @throws IOException
     * @throws TimeoutException
     */
    public static void main(String[] args) throws IOException, TimeoutException {
        Connection connection = ConnectionUtil.getConnection();//创建链接
        Channel channel = connection.createChannel(); //创建频道
        /**
         * 声明交换机
         * 参数1：交换机名称
         * 参数2：交换机类型，fanout、topic、direct、headers
         */
        channel.exchangeDeclare("direct_exchange", BuiltinExchangeType.DIRECT);
        /**
         * 声明队列
         * 参数1：队列名称
         * 参数2：是否定义持久化队列
         * 参数3：是否独占本次连接
         * 参数4：是否在不使用的时候自动删除队列
         * 参数5：队列其它参数
         */
        channel.queueDeclare("direct_queue_1",true,false,false,null);
        channel.queueDeclare("direct_queue_2",true,false,false,null);
        //队列绑定交换机
        channel.queueBind("direct_queue_1","direct_exchange","insert");
        channel.queueBind("direct_queue_2","direct_exchange","update");
            //消息
            String message = "路由模式:欢迎来到杭州千锋教育！insert";
            String message1 = "路由模式:欢迎来到杭州千锋教育！update";
            /**
             * 参数1：交换机名称，如果没有指定则使用默认Default Exchage
             * 参数2：路由key,简单模式可以传递队列名称
             * 参数3：消息其它属性
             * 参数4：消息内容
             */
            channel.basicPublish("direct_exchange","insert",null,message.getBytes());
            channel.basicPublish("direct_exchange","update",null,message1.getBytes());


        //关闭资源
        channel.close();
        connection.close();

    }
}
